iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0
自我挑戰組

從零開始學Python系列 第 30

[Day30] Python-Pygame (lunch choice spinner)

  • 分享至 

  • xImage
  •  
  1. import
import pygame as pg
from pygame.locals import *
import math 
  1. 初始化pygame
pg.init()
  1. 設定視窗
width, height = 600, 400 #寬度和高度
screen = pg.display.set_mode((width, height)) #創建一個 Pygame 視窗,並設定大小
pg.display.set_caption('Choose your lunch')  #視窗標題
  1. 顏色的設定(預先設定好,之後較方便應用)
white = (255, 255, 255)
black = (0, 0, 0)
blue = (0, 0, 255)
  1. 設定餐點選項,並利用len(x)來計算午餐選項個數
lunch_options = ['Dumplings', 'Beef noodles', 'Sushi', 'Tonkatsu', 'Fried rice', 'Salad', 'Fried chicken']
num_options = len(lunch_options)
  1. 控制視窗的運行,只要 running 為真,就會持續執行
running = True
while running:
    for event in pg.event.get():
        if event.type == QUIT: #如果關閉視窗,就會將 running 設置為 False來結束
            running = False
  1. 將窗口的背景填充為白色
    screen.fill(white)
  1. 設定轉盤的中心以及轉盤大小
    center_x, center_y = width // 2, height // 2
    radius = 150 #半徑
  1. 每個午餐選項在轉盤上面的位置設定
    for i in range(num_options):
        angle = 2 * math.pi / num_options * i  # 計算每個選項的角度,math.pi為180度
        x = center_x + radius * math.cos(angle)  # 計算 x 坐標
        y = center_y + radius * math.sin(angle)  # 計算 y 坐標
  1. 設定字體跟位置,將文字print上轉盤
        text_surface = pg.font.SysFont('Arial', 20).render(lunch_options[i], True, black)
        text_rect = text_surface.get_rect(center=(x, y))
        screen.blit(text_surface, text_rect)
  1. 繪製一個圓
pg.draw.circle(screen, blue, (center_x, center_y), radius, 2)
  1. 更新前面繪製的內容
pg.display.flip()

13.關閉視窗

pg.quit()

https://ithelp.ithome.com.tw/upload/images/20240920/20168811EF6sZzFMQY.png

挑戰到Day30了,但未來會繼續把這個pygame完成繼續更新!


上一篇
[Day29] Python-Pygame
系列文
從零開始學Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言